package com.gitee.mechanic.core.utils;/*
 * Copyright 2016-2017 TVI Go Easy.
 * Created on 2017/9/13 20:56
 *//*

package com.tvi.mybatis;

import com.google.common.collect.Lists;
import com.tvi.core.base.SupperEntity;
import com.tvi.core.exception.BeanMappingException;

import java.time.LocalDateTime;
import java.util.List;

*/
/**
 * Bean 处理工具类
 *
 * @author mechanic
 *//*

public class BeanUtils {

    */
/**
     * 为实体类的公共字段设置值，实体类必须继承 {@link SingleId} 或者 {@link CompositeId}。
     * <pre>
     * 如实体的id为空，则会为创建人和创建时间赋值，如id不为空，则不会为创建人和创建时间赋值。
     * </pre>
     *
     * @param entity 需要赋值的实体类
     * @param userId 创建人用户编号
     * @param <T>    实体类型
     * @return 设置了公共字段的实体
     * @throws BeanMappingException 当参数 entity 的父类不为 SingleId 或 CompositeId 时，则抛出该异常。
     *//*

    @SuppressWarnings("unchecked")
    public static <T> T setCommonValue(T entity, Long userId) throws BeanMappingException {
        if (entity == null) {
            throw new NullPointerException("需为公共字段设置值的实体不能为空。");
        }
        if (userId == null) {
            throw new NullPointerException("用户编号不能为空。");
        }
        T newEntity = null;
        LocalDateTime now = LocalDateTime.now();
        if (entity instanceof SupperEntity) {
            SupperEntity baseEntity = (SupperEntity) entity;
            //if (singleId.getId() == null) {
            baseEntity.setCreateUser(userId);
            baseEntity.setCreateTime(now);
            //}
            baseEntity.setUpdateUser(userId);
            baseEntity.setUpdateTime(now);
            newEntity = (T) baseEntity;
        }
        */
/*else if (entity instanceof CompositeId) {
            CompositeId compositeId = (CompositeId) entity;
            //if (compositeId.getCompId() == null) {
                compositeId.setCreateUser(userId);
                compositeId.setCreateTime(now);
            //}
            compositeId.setUpdateUser(userId);
            compositeId.setUpdateTime(now);
            newEntity = (T) compositeId;
        } *//*

        else {
            throw new BeanMappingException("实体的父类必须为 SingleId 或 CompositeId 。");
        }
        return newEntity;
    }

    */
/**
     * 为实体类的公共字段设置值，实体类必须继承 {@link SingleId} 或者 {@link CompositeId}。
     * <pre>
     * 如实体的id为空，则会为创建人和创建时间赋值，如id不为空，则不会为创建人和创建时间赋值。
     * </pre>
     *
     * @param entities 需要赋值的实体类的集合
     * @param userId   创建人用户编号
     * @param <T>      实体类型
     * @return 设置了公共字段的实体
     * @throws BeanMappingException 当参数 entities 中的对象的父类不为 SingleId 或 CompositeId 时，则抛出该异常。
     *//*

    public static <T> List<T> setCommonValue(Iterable<T> entities, Long userId) throws BeanMappingException {

        if (entities == null) {
            throw new NullPointerException("需为公共字段设置值的实体不能为空。");
        }
        if (userId == null) {
            throw new NullPointerException("用户编号不能为空。");
        }

        List<T> result = Lists.newArrayList();

        for (T entity : entities) {
            result.add(setCommonValue(entity, userId));
        }

        return result;
    }
}
*/
